iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
SideProject30

從零開始的外匯自動程式交易系列 第 28

DAY28 利用ChatGPT寫策略

  • 分享至 

  • xImage
  •  

在學了那麼多外匯相關的語言及用法後,我們就可以依靠自己的知識寫出一個完整的EA了,不過這時很多人便會想說,ChatGPT那麼方便,可不可以用它來協助我們實現策略,再也不用學什麼程式碼就可以編寫自動交易程式了?
答案是可以,但絕對不是什麼程式碼都不用會。今天就來分享一下如何用ChatGPT編寫出一份自己的交易策略。

用ChatGPT寫語言

其實有常在使用ChatGPT來寫程式的朋友應該都知道,他寫的程式在指令給清楚的情況下都不太會出錯,尤其是像JAVA、Python...。但是許多人說ChatGPT寫出的問題一堆、常常錯誤之類的問題,通常在於指令過於開放性,或者是他在其中莫名的加進了別的語言,導致編譯出現未定義函數之類的問題。這時候就變成考驗使用者看不看得懂該語言了。依我實測下來,ChatGPT常常出現的問題便是一本正經的講幹話,像是常常在請他寫MQL5語言時,會跟我說在什麼情況要用什麼函數,這個函數的參數要怎麼設定...之類的,但是這個函數根本就不是MQL5的內建函數,而既使再次要求他使用MQL5語言,他也是會誠摯的道歉然後繼續亂寫。但總歸,在懂程式碼的人面前,這些都不會是太大的問題。所以在請程式寫一些較於冷門的語言時,請確保自己對那個程式碼足夠熟悉,才不會遇到錯誤還只能默默地罵ChatGPT沒用。

一鍵完成完整程式碼?

很多人在第一次使用ChatGPT時,都會直接給他我們預期達到成果的指令,但這也是大多人失敗的主因。我自己在實測時,如果一次就要求他寫完整個EA,大概出現的結果幾乎都是四不像,雖然說可以編譯,但是符不符合我的想法不說,還可能出現無限迴圈(無限下單之類的),或者獲取第-1根K棒的值,但未來的K棒要怎麼取值呢?總之,要求ChatGPT一次寫出能動的EA看來是不太可能,有些會沒有進場時機,有的會沒有退場。所以要使用ChatGPT寫出能用的東西只能使用divide and conquer來完成了。

什麼是divide and conquer

Divide and Conquer是一種算法設計和問題解決的方法,核心思想是將一個大問題分解成更小的子問題,然後逐個解決這些子問題,最後將它們的解合並起來以得到原始問題的解。這個方法通常適用於那些可以分解成相似子問題的問題,可以顯著減少問題的覆雜性,提高問題的解決效率。

分而治之算法通常包括以下三個主要步驟:

分解(Divide):將原始問題分解成若幹個較小的、相似的子問題。這一步驟的目標是簡化問題,使得每個子問題都比原始問題更容易解決。

解決(Conquer):逐個解決每個子問題。通常,這些子問題的規模比原始問題小,因此更容易解決。如果子問題足夠小,就可以直接求解它們。

合並(Combine):將子問題的解合並起來,以獲得原始問題的解。這通常是一個相對簡單的步驟,因為子問題的解已經得到了。

分解問題

在EA設計中,最重要的便是進場與退場,而一個完整的交易策略便是「進場+出場」,其他像是設定止損、盈利之類的,今天就先不提了,不然連單都下不了,設定了再多都沒用。
我通常在分解問題時則會依照這些步驟來分:

  1. 進場
  2. 交易條件
  3. 退場

在利用這些子問題分別對ChatGPT詠唱後,再將得到的結果組合寫至OnTick()處理器中。運氣好的話,說不定我們只要寫一兩個if就能結束了。
今天大綱就提到這,明天會以各問題以及詠唱的部分做更詳細的實作。


上一篇
DAY27 回測
下一篇
DAY29 ChatGPT編寫MQL4實作
系列文
從零開始的外匯自動程式交易30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言